import path from 'path';

/**
 * 规范化本地路径（Windows 和 Git Bash 兼容）
 * @param {string} filePath - 本地文件路径
 * @returns {string} 规范化后的绝对路径
 */
export function normalizeLocalPath(filePath) {
  if (!filePath) return filePath;
  
  // 移除引号
  filePath = filePath.replace(/^["']|["']$/g, '');
  
  // 处理 Git Bash 的 POSIX 路径格式（/d/, /c/ 等）
  if (process.platform === 'win32' && /^\/[a-z]\//.test(filePath)) {
    const driveLetter = filePath.charAt(1).toUpperCase();
    filePath = driveLetter + ':' + filePath.substring(2);
  }
  
  // 转换为绝对路径
  return path.resolve(filePath);
}

/**
 * 规范化远程路径（Unix 风格）
 * 注意：远程路径应该由用户直接提供正确的 Unix 路径格式
 * 此函数仅做基本清理，不做复杂的自动转换
 * @param {string} remotePath - 远程路径
 * @returns {string} 规范化后的远程路径
 */
export function normalizeRemotePath(remotePath) {
  if (!remotePath) return remotePath;
  
  // 移除引号
  remotePath = remotePath.replace(/^["']|["']$/g, '');
  
  // 仅在 Windows 下处理 Git Bash 可能的路径误转换
  // 检测是否是 Git Bash 将 Linux 路径转换成了 Windows 风格
  if (process.platform === 'win32') {
    // 匹配类似 D:/Software/Git/home/xxx 的模式
    const gitBashMatch = remotePath.match(/^[A-Za-z]:[/\\].*[/\\](home|tmp|root|var|etc|opt|srv|usr|mnt|boot)([/\\].*)?$/i);
    if (gitBashMatch) {
      // 提取 Linux 路径部分
      const linuxDir = gitBashMatch[1];
      const restPath = gitBashMatch[2] || '';
      remotePath = '/' + linuxDir + restPath.replace(/\\/g, '/');
    }
  }
  
  // 统一使用 Unix 风格斜杠，移除多余斜杠
  return remotePath.replace(/\\/g, '/').replace(/\/+/g, '/');
}

/**
 * 使用 POSIX 风格连接远程路径
 * @param {...string} paths - 路径片段
 * @returns {string} 连接后的路径
 */
export function joinRemotePath(...paths) {
  return path.posix.join(...paths);
}
